home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / 1.098 / fsrmt / fsrmtInt.h < prev    next >
C/C++ Source or Header  |  1991-02-01  |  9KB  |  232 lines

  1. /*
  2.  * fsrmtInt.h --
  3.  *
  4.  *    Definitions of the parameters required for Sprite Domain operations
  5.  *
  6.  * Copyright (C) 1985 Regents of the University of California
  7.  * All rights reserved.
  8.  * Permission to use, copy, modify, and distribute this
  9.  * software and its documentation for any purpose and without
  10.  * fee is hereby granted, provided that the above copyright
  11.  * notice appear in all copies.  The University of California
  12.  * makes no representations about the suitability of this
  13.  * software for any purpose.  It is provided "as is" without
  14.  * express or implied warranty.
  15.  *
  16.  *
  17.  * $Header: /sprite/src/kernel/fsrmt/RCS/fsrmtInt.h,v 9.4 91/02/01 16:33:26 shirriff Exp $ SPRITE (Berkeley)
  18.  */
  19.  
  20. #ifndef _FSSPRITEDOMAIN
  21. #define _FSSPRITEDOMAIN
  22.  
  23. #include <fsNameOps.h>
  24. #include <proc.h>
  25. #include <fsrmt.h>
  26.  
  27. #include <stdio.h>
  28.  
  29. /*
  30.  * Parameters for the read and write RPCs.
  31.  */
  32.  
  33. typedef struct FsrmtIOParam {
  34.     Fs_FileID    fileID;            /* Identifies file to read from */
  35.     Fs_FileID    streamID;        /* Identifies stream (for offset) */
  36.     Sync_RemoteWaiter waiter;        /* Process info for remote waiting */
  37.     Fs_IOParam    io;            /* I/O parameter block */
  38. } FsrmtIOParam;
  39.  
  40. /*
  41.  * Parameters for the iocontrol RPC
  42.  */
  43.  
  44. typedef struct FsrmtIOCParam {
  45.     Fs_FileID    fileID;        /* File to manipulate. */
  46.     Fs_FileID    streamID;    /* Stream to the file, needed for locking */
  47.     Proc_PID    procID;        /* ID of invoking process */
  48.     Proc_PID    familyID;    /* Family of invoking process */
  49.     int        command;    /* I/O Control to perform. */
  50.     int        inBufSize;    /* Size of input params to ioc. */
  51.     int        outBufSize;    /* Size of results from ioc. */
  52.     Fmt_Format    format;        /* Defines client's byte order/alignment 
  53.                  * format. */
  54.     int        uid;        /* Effective User ID */
  55. } FsrmtIOCParam;
  56.  
  57. /*
  58.  * Parameters for the I/O Control RPC.  (These aren't used, oops,
  59.  * someday they should be used.)
  60.  */
  61.  
  62. typedef struct FsrmtIOCParamNew {
  63.     Fs_FileID    fileID;        /* File to manipulate. */
  64.     Fs_FileID    streamID;    /* Stream to the file, needed for locking */
  65.     Fs_IOCParam    ioc;        /* IOControl parameter block */
  66. } FsrmtIOCParamNew;
  67.  
  68. /*
  69.  * Parameters for the block copy RPC.
  70.  */
  71. typedef struct FsrmtBlockCopyParam {
  72.     Fs_FileID    srcFileID;    /* File to copy from. */
  73.     Fs_FileID    destFileID;    /* File to copy to. */
  74.     int        blockNum;    /* Block to copy to. */
  75. } FsrmtBlockCopyParam;
  76.  
  77.  
  78. /*
  79.  * RPC debugging.
  80.  */
  81. #ifndef CLEAN
  82. #define FSRMT_RPC_DEBUG_PRINT(string) \
  83.     if (fsrmt_RpcDebug) {\
  84.         printf(string);\
  85.     }
  86. #define FSRMT_RPC_DEBUG_PRINT1(string, arg1) \
  87.     if (fsrmt_RpcDebug) {\
  88.         printf(string, arg1);\
  89.     }
  90. #define FSRMT_RPC_DEBUG_PRINT2(string, arg1, arg2) \
  91.     if (fsrmt_RpcDebug) {\
  92.         printf(string, arg1, arg2);\
  93.     }
  94. #define FSRMT_RPC_DEBUG_PRINT3(string, arg1, arg2, arg3) \
  95.     if (fsrmt_RpcDebug) {\
  96.         printf(string, arg1, arg2, arg3);\
  97.     }
  98. #define FSRMT_RPC_DEBUG_PRINT4(string, arg1, arg2, arg3, arg4) \
  99.     if (fsrmt_RpcDebug) {\
  100.         printf(string, arg1, arg2, arg3, arg4);\
  101.     }
  102. #else
  103. #define FSRMT_RPC_DEBUG_PRINT(string)
  104. #define FSRMT_RPC_DEBUG_PRINT1(string, arg1)
  105. #define FSRMT_RPC_DEBUG_PRINT2(string, arg1, arg2)
  106. #define FSRMT_RPC_DEBUG_PRINT3(string, arg1, arg2, arg3)
  107. #define FSRMT_RPC_DEBUG_PRINT4(string, arg1, arg2, arg3, arg4)
  108. #endif not CLEAN
  109.  
  110.  
  111.  /*
  112.  * Sprite Domain functions called via Fsprefix_LookupOperation.
  113.  * These are called with a pathname.
  114.  */
  115. extern ReturnStatus FsrmtImport _ARGS_((char *prefix, int serverID, 
  116.         Fs_UserIDs *idPtr, int *domainTypePtr,
  117.         Fs_HandleHeader **hdrPtrPtr));
  118. extern ReturnStatus FsrmtOpen _ARGS_((Fs_HandleHeader *prefixHandle,
  119.         char *relativeName, Address argsPtr, Address resultsPtr,
  120.         Fs_RedirectInfo **newNameInfoPtrPtr));
  121. extern ReturnStatus FsrmtReopen _ARGS_((Fs_HandleHeader *hdrPtr, int inSize,
  122.         Address inData, int *outSizePtr, Address outData));
  123. extern ReturnStatus FsrmtGetAttrPath _ARGS_((Fs_HandleHeader *prefixHandle, 
  124.         char *relativeName, Address argsPtr, Address resultsPtr,
  125.         Fs_RedirectInfo **newNameInfoPtrPtr));
  126. extern ReturnStatus FsrmtSetAttrPath _ARGS_((Fs_HandleHeader *prefixHandle, 
  127.         char *relativeName, Address argsPtr, Address resultsPtr, 
  128.         Fs_RedirectInfo **newNameInfoPtrPtr));
  129. extern ReturnStatus FsrmtMakeDevice _ARGS_((Fs_HandleHeader *prefixHandle, 
  130.         char *relativeName, Address argsPtr, Address resultsPtr, 
  131.         Fs_RedirectInfo **newNameInfoPtrPtr));
  132. extern ReturnStatus FsrmtMakeDir _ARGS_((Fs_HandleHeader *prefixHandle, 
  133.         char *relativeName, Address argsPtr, Address resultsPtr, 
  134.         Fs_RedirectInfo **newNameInfoPtrPtr));
  135. extern ReturnStatus FsrmtRemove _ARGS_((Fs_HandleHeader *prefixHandle, 
  136.         char *relativeName, Address argsPtr, Address resultsPtr, 
  137.         Fs_RedirectInfo **newNameInfoPtrPtr));
  138. extern ReturnStatus FsrmtRemoveDir _ARGS_((Fs_HandleHeader *prefixHandle, 
  139.         char *relativeName, Address argsPtr, Address resultsPtr, 
  140.         Fs_RedirectInfo **newNameInfoPtrPtr));
  141. extern ReturnStatus FsrmtRename _ARGS_((Fs_HandleHeader *prefixHandle1, 
  142.         char *relativeName1, Fs_HandleHeader *prefixHandle2, 
  143.         char *relativeName2, Fs_LookupArgs *lookupArgsPtr, 
  144.         Fs_RedirectInfo **newNameInfoPtrPtr, Boolean *name1ErrorPtr));
  145. extern ReturnStatus FsrmtHardLink _ARGS_((Fs_HandleHeader *prefixHandle1,
  146.         char *relativeName1, Fs_HandleHeader *prefixHandle2, 
  147.         char *relativeName2, Fs_LookupArgs *lookupArgsPtr, 
  148.         Fs_RedirectInfo **newNameInfoPtrPtr, Boolean *name1ErrorPtr));
  149.  
  150.  
  151. /*
  152.  * Sprite Domain functions called via the fsAttrOpsTable switch.
  153.  * These are called with a fileID.
  154.  */
  155. #ifdef SOSP91
  156. extern ReturnStatus FsrmtGetAttr _ARGS_((Fs_FileID *fileIDPtr, int clientID, 
  157.         Fs_Attributes *attrPtr, int hostID, int userID));
  158. extern ReturnStatus FsrmtSetAttr _ARGS_((Fs_FileID *fileIDPtr, 
  159.         Fs_Attributes *attrPtr, Fs_UserIDs *idPtr, int flags, int
  160.         clientID, int hostID, int userID));
  161. #else
  162. extern ReturnStatus FsrmtGetAttr _ARGS_((Fs_FileID *fileIDPtr, int clientID, 
  163.         Fs_Attributes *attrPtr));
  164. extern ReturnStatus FsrmtSetAttr _ARGS_((Fs_FileID *fileIDPtr, 
  165.         Fs_Attributes *attrPtr, Fs_UserIDs *idPtr, int flags));
  166. #endif
  167.  
  168. extern ReturnStatus FsrmtDeviceIoOpen _ARGS_((Fs_FileID *ioFileIDPtr, 
  169.         int *flagsPtr, int clientID, ClientData streamData,
  170.         char *name, Fs_HandleHeader **ioHandlePtrPtr));
  171. extern Fs_HandleHeader *FsrmtDeviceVerify _ARGS_((Fs_FileID *fileIDPtr, 
  172.         int clientID, int *domainTypePtr));
  173. extern ReturnStatus FsrmtDeviceMigrate _ARGS_((Fsio_MigInfo *migInfoPtr, 
  174.         int dstClientID, int *flagsPtr, int *offsetPtr, int *sizePtr, 
  175.         Address *dataPtr));
  176. extern ReturnStatus FsrmtDeviceReopen _ARGS_((Fs_HandleHeader *hdrPtr, 
  177.         int clientID, ClientData inData, int *outSizePtr, 
  178.         ClientData *outDataPtr));
  179.  
  180. extern Fs_HandleHeader *FsrmtPipeVerify _ARGS_((Fs_FileID *fileIDPtr,
  181.         int clientID, int *domainTypePtr));
  182. extern ReturnStatus FsrmtPipeReopen _ARGS_((Fs_HandleHeader *hdrPtr, 
  183.         int clientID, ClientData inData, int *outSizePtr, 
  184.         ClientData *outDataPtr));
  185.  
  186.  
  187. extern ReturnStatus FsrmtFileIoOpen _ARGS_((Fs_FileID *ioFileIDPtr, 
  188.         int *flagsPtr, int clientID, ClientData streamData, char *name,
  189.         Fs_HandleHeader **ioHandlePtrPtr));
  190. extern ReturnStatus FsrmtFileReopen _ARGS_((Fs_HandleHeader *hdrPtr, 
  191.         int clientID, ClientData inData, int *outSizePtr, 
  192.         ClientData *outDataPtr));
  193. #ifdef SOSP91
  194. extern ReturnStatus FsrmtFileClose _ARGS_((Fs_Stream *streamPtr, int clientID, 
  195.         Proc_PID procID, int flags, int dataSize, 
  196.         ClientData closeData, int *offsetPtr, int *rwFlagsPtr));
  197. #else
  198. extern ReturnStatus FsrmtFileClose _ARGS_((Fs_Stream *streamPtr, int clientID, 
  199.         Proc_PID procID, int flags, int dataSize, ClientData closeData));
  200. #endif
  201. extern Boolean FsrmtFileScavenge _ARGS_((Fs_HandleHeader *hdrPtr));
  202. extern Fs_HandleHeader *FsrmtFileVerify _ARGS_((Fs_FileID *fileIDPtr, 
  203.         int clientID, int *domainTypePtr));
  204. extern ReturnStatus FsrmtFileMigClose _ARGS_((Fs_HandleHeader *hdrPtr, 
  205.         int flags));
  206. extern ReturnStatus FsrmtFileMigOpen _ARGS_((Fsio_MigInfo *migInfoPtr, 
  207.         int size, ClientData data, Fs_HandleHeader **hdrPtrPtr));
  208. extern ReturnStatus FsrmtFileMigrate _ARGS_((Fsio_MigInfo *migInfoPtr, 
  209.         int dstClientID, int *flagsPtr, int *offsetPtr, int *sizePtr, 
  210.         Address *dataPtr));
  211. extern ReturnStatus FsrmtFileRead _ARGS_((Fs_Stream *streamPtr, 
  212.         Fs_IOParam *readPtr, Sync_RemoteWaiter *remoteWaitPtr, 
  213.         Fs_IOReply *replyPtr));
  214. extern ReturnStatus FsrmtFileWrite _ARGS_((Fs_Stream *streamPtr, 
  215.         Fs_IOParam *writePtr, Sync_RemoteWaiter *remoteWaitPtr, 
  216.         Fs_IOReply *replyPtr));
  217. extern ReturnStatus FsrmtFilePageRead _ARGS_((Fs_Stream *streamPtr, 
  218.         Fs_IOParam *readPtr, Sync_RemoteWaiter *remoteWaitPtr, 
  219.         Fs_IOReply *replyPtr));
  220. extern ReturnStatus FsrmtFilePageWrite _ARGS_((Fs_Stream *streamPtr, 
  221.         Fs_IOParam *writePtr, Sync_RemoteWaiter *remoteWaitPtr, 
  222.         Fs_IOReply *replyPtr));
  223. extern ReturnStatus FsrmtFileIOControl _ARGS_((Fs_Stream *streamPtr, 
  224.         Fs_IOCParam *ioctlPtr, Fs_IOReply *replyPtr));
  225. extern ReturnStatus FsrmtFileGetIOAttr _ARGS_((Fs_FileID *fileIDPtr, 
  226.         int clientID, Fs_Attributes *attrPtr));
  227. extern ReturnStatus FsrmtFileSetIOAttr _ARGS_((Fs_FileID *fileIDPtr, 
  228.         Fs_Attributes *attrPtr, int flags));
  229.  
  230.  
  231. #endif _FSSPRITEDOMAIN
  232.